package com.springboot.study.controller; // 定义控制器类所在的包

import com.springboot.study.entity.User; // 引入User实体类
import io.swagger.v3.oas.annotations.Operation; // 引入Swagger的Operation注解，用于接口说明
import io.swagger.v3.oas.annotations.tags.Tag; // 引入Swagger的Tag注解，用于接口分类
import io.swagger.v3.oas.annotations.parameters.RequestBody; // 引入Swagger的RequestBody注解（本例未用到）
import io.swagger.v3.oas.annotations.Parameter; // 引入Swagger的Parameter注解，用于参数说明
import io.swagger.v3.oas.annotations.media.Schema; // 引入Swagger的Schema注解（本例未用到）
import org.springframework.web.bind.annotation.PostMapping; // 引入Post请求映射注解
import org.springframework.web.bind.annotation.RequestMapping; // 引入请求映射注解
import org.springframework.web.bind.annotation.RequestParam; // 引入请求参数注解
import org.springframework.web.bind.annotation.RestController; // 引入Rest控制器注解

/**
 * 测试用控制器类，提供简单的接口示例
 */
@RestController // 标记该类为Rest风格的控制器，返回的数据会自动序列化为JSON格式
@Tag(name = "用户管理")  // Swagger注解，给该控制器的接口打上“用户管理”标签，便于文档分组显示
public class TestController {

    /**
     * 简单测试接口，访问路径 /test
     * @return 返回字符串 "hello world"
     */
    @RequestMapping("/test") // 映射所有请求方式的 /test 路径
    public String test(){
        return "hello world"; // 返回简单字符串，测试接口是否可用
    }

    /**
     * 查询所有用户信息接口，POST请求 /user
     * @return 返回一个新的空User对象
     */
    @Operation(summary = "查询所有用户信息") // Swagger接口说明，简述接口功能
    @PostMapping("/user") // 映射POST请求的 /user 路径
    public User user(){
        return new User(); // 返回一个空的User实例，表示示例返回
    }

    /**
     * 登录接口，POST请求 /login
     * @param username 请求参数中的用户名，必填
     * @param password 请求参数中的密码，必填
     * @return 返回一个包含传入用户名和密码的User对象
     */
    @Operation(summary = "登录") // Swagger接口说明，描述该接口的功能
    @PostMapping("/login") // 映射POST请求的 /login 路径
    public User login(
            @Parameter(description = "用户名", required = true, example = "vick") // Swagger参数描述，标明必填和示例
            @RequestParam("username") String username, // 从请求参数中获取名为username的参数

            @Parameter(description = "密码", required = true, example = "123456") // Swagger参数描述，标明必填和示例
            @RequestParam("password") String password) { // 从请求参数中获取名为password的参数

        return new User(username, password); // 返回包含传入用户名和密码的User对象
    }
}
